import { reqLogin, reqLogout } from '@/api/user'

// 每次都到localStorage中读取,如果没有就是空值
const initState = JSON.parse(localStorage.getItem('info')) || {
  token: '', //用户登录后的唯一标识
  name: '' //用户名
}

export default {
  namespaced: true,
  state: initState,
  actions: {
    // 登录
    async login({ commit }, { phone, password }) {
      // 发送请求获取数据
      const result = await reqLogin(phone, password)
      commit('LOGIN', result)
    },
    // 退出登录
    async logout({ commit }) {
      // 发请求删除服务器的token
      await reqLogout()
      commit('LOGOUT')
    }
  },
  mutations: {
    // 登录
    LOGIN(state, result) {
      // 将数据存储在vuex中
      state.name = result.name
      state.token = result.token

      //   将数据存储到localStorage中
      localStorage.setItem(
        'info',
        JSON.stringify({
          name: result.name,
          token: result.token
        })
      )
    },
    // 退出登录
    LOGOUT(state) {
      // 清除vuex和localStorage中的token信息
      state.name = ''
      state.token = ''
      localStorage.removeItem('info')
    }
  }
}
